package com.mfnote.db.dao;

import java.util.ArrayList;
import java.util.HashMap;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.mfnote.db.DBHelper;
import com.mfnote.db.DBInfo;
import com.mfnote.model.MainCountEntity;
import com.mfnote.model.PaintEntity;
import com.mfnote.model.RemindEntity;

/**
 * 提醒词库
 * @author ZHF
 *
 */
public class RemindDao {

	public SQLiteDatabase db; // 系统提供的数据库
	private DBHelper dbHelper = null;
	

	public RemindDao(Context context) {
		super();
		this.dbHelper =  DBHelper.getInstance(context);//用static方法来实例化该对象
	}

	/** 打开数据库 **/
	private void openDatabase() {
		db = dbHelper.getWritableDatabase(); // 这里根据数据库名和版本号判断，第一次就调用onCreate创建表，第二次若两者相同就直接返回，若不同调用onUpgrade
	}
	
	/**插入提醒数据词库 **/
	public long insertRemindEntity(RemindEntity remindEntity) {
		// 打开数据库
		openDatabase();

		ContentValues values = new ContentValues();

		values.put("title", remindEntity.getName());
		values.put("groupId", remindEntity.getGroupId());

		long raw = db.insert(DBInfo.Table.TB_NEWWRITEREMIND_NAME, null, values);

		db.close();
		return raw; // 返回的是当前受影响的行号( 不为-1即为插入成功)
	}

	
	/** 查询表中所有的记录 **/
	public ArrayList<HashMap<String, Object>> getAllReminds() {
		// 打开数据库
		openDatabase(); // 首次会新建表
		ArrayList<HashMap<String, Object>> list = null; // 接收数据

		//Cursor----ResultSet:用于接收数据库数据列表
		Cursor cursor = db.query(DBInfo.Table.TB_NEWWRITEREMIND_NAME, null, null,null, null, null, null);
		
		if (null != cursor && cursor.getCount() > 0) {
			list = new ArrayList<HashMap<String, Object>>();
			
			while (cursor.moveToNext()) {
				HashMap<String, Object> map = new HashMap<String, Object>();
				map.put("name",cursor.getString(cursor.getColumnIndex("title")));
				map.put("groupId",cursor.getString(cursor.getColumnIndex("groupId")));
				list.add(map);
			}
		}
		cursor.close();
		db.close(); // 用完记得要关闭哦
		return list;
	}
	
	/** 删除记事本表的记录 **/
	public long deleteRemind(HashMap<String, Object> map) {
		// 打开数据库
		openDatabase();

		long raws = db.delete(DBInfo.Table.TB_NEWWRITEREMIND_NAME, "title=?", new String[] { map.get("name").toString() });

		db.close();
		return raws; //返回的是当前受影响的行号number of rows affected 
	}
	
	
	
}
